package com.shd.common.core.response;

import com.shd.common.core.bean.ResultBean;
import com.shd.common.core.constant.ResultConstant;

public class R {
    /**
     * 成功
     *
     * @param msg 消息描述
     * @param <T>
     * @return
     */
    public static <T> ResultBean<T> success(String msg) {
        return handler(ResultConstant.SUCCESS, msg, null);
    }

    /**
     * @param msg  消息描述
     * @param data 接口返回的数据
     * @param <T>
     * @return
     */
    public static <T> ResultBean<T> success(String msg, T data) {
        return handler(ResultConstant.SUCCESS, msg, data);
    }

    /**
     * 失败
     * @param msg
     * @return
     * @param <T>
     */
    public static <T> ResultBean<T> fail(String msg) {
        return handler(ResultConstant.FAIL, msg, null);
    }

    /**
     * 失败
     * @param msg
     * @param data
     * @return
     * @param <T>
     */
    public static <T> ResultBean<T> fail(String msg, T data) {
        return handler(ResultConstant.FAIL, msg, data);
    }


    /**
     * 结果封装
     *
     * @param code 状态码
     * @param msg  消息描述
     * @param data 接口数据
     * @param <T>
     * @return
     */
    private static <T> ResultBean<T> handler(int code, String msg, T data) {
        return new ResultBean<>(code, msg, data);
    }
}
